﻿
import java.util.Random;

public class RandomStrategyWithEyes implements Strategy 
{
	/*
	 * (Javadoc)
	 * ���������� ����������� �������� �������
	 * @author StrategyTeam
	 * @param map[][] ������ ���������
	 * @param xMonster, yMonster ��������� �������
	 * @param xPacman, yPacman ���������� �������
	 * @return �������� �� 0 �� 3, ���
	 *         0 - �������� �����
	 *         1 - �������� ������
	 *         2 - �������� ����
	 *         3 - �������� �����
	 */
	public int SelectDirection(Thing map[][], int xMonster, int yMonster, int xPacman, int yPacman)
	{
		int direction[]=new int[4];
		int count=0;
		int WerePacman = PacmanAndMonster(map, xMonster, yMonster, xPacman, yPacman);
		Wall wall = new Wall();
		
		if (WerePacman == -1)
		{
			if (map[xMonster][yMonster-1].getClass().getName() != wall.getClass().getName())
			{
				direction[count]=0;
				count++;
			}
			if (map[xMonster+1][yMonster].getClass().getName() != wall.getClass().getName())
			{
				direction[count]=1;
				count++;
			}
			if (map[xMonster][yMonster+1].getClass().getName() != wall.getClass().getName())
			{
				direction[count]=2;
				count++;
			}
			if (map[xMonster-1][yMonster].getClass().getName() != wall.getClass().getName())
			{
				direction[count]=3;
				count++;
			}
			count=new Random().nextInt(count);
			
			return direction[count];
		}
		else return WerePacman;
	}
	
	/*
	 * (Javadoc)
	 * ���������� ����������� �������� � ������� ���� ������ � ������ ��������� �� ����� 
	 * ����� � ����� ���� ��� ������
	 * @author StrategyTeam
	 * @param map[][] ������ ���������
	 * @param xMonster, yMonster ��������� �������
	 * @param xPacman, yPacman ���������� �������
	 * @return �������� �� -1 �� 3, ���
	 *         -1 - ������� ��� � ���� ��������� �������
	 *         0 - �������� �����
	 *         1 - �������� ������
	 *         2 - �������� ����
	 *         3 - �������� �����
	 */
	 public int PacmanAndMonster(Thing map[][], int xMonster, int yMonster, int xPacman, int yPacman)
	 {
		 int x = xMonster;
		 int y = yMonster-1;
		 Wall wall = new Wall();
		 Packman packman = new Packman(0,0);
		 while (map[x][y].getClass().getName() != wall.getClass().getName())
		 {
			 if  (map[x][y].getClass().getName() != packman.getClass().getName())
			 {
				 return 0;
			 }
			 y--;
		 }
		 
		 
		 x = xMonster+1;
		 y = yMonster;
		 while (map[x][y].getClass().getName() != wall.getClass().getName())
		 {
			 if  (map[x][y].getClass().getName() != packman.getClass().getName())
			 {
				 return 1;
			 }
			 x++;
		 }
		 
		 
		 x = xMonster;
		 y = yMonster+1;
		 while (map[x][y].getClass().getName() != wall.getClass().getName())
		 {
			 if  (map[x][y].getClass().getName() != packman.getClass().getName())
			 {
				 return 2;
			 }
			 y++;
		 }
		 
		 
		 x = xMonster-1;
		 y = yMonster;
		 while (map[x][y].getClass().getName() != wall.getClass().getName())
		 {
			 if  (map[x][y].getClass().getName() != packman.getClass().getName())
			 {
				 return 3;
			 }
			 x--;
		 }
		 return -1;
	 }
}
